home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / utility / 100 / tutorpas.fra < prev    next >
Encoding:
Text File  |  1987-01-16  |  11.4 KB  |  312 lines

  1. 0660103030566
  2. 1TUTORIAL EN PASCAL2ième partie
  3. 2page # de 8
  4. 9[....................................................]
  5.  
  6. =================DEUXIEMELECONDE====================
  7.  
  8. à                         PASCAL
  9. Ç
  10.     ==============PARSERGEVAILLANCOURT==================
  11.  
  12. 
  13. Bonjouràtous!!
  14.  
  15.     Jesuisheureuxdevousrevenirenpleineformeaveccette
  16. deuxièmepartiedel'étudeenPascal.J'espèrequelapremière
  17. partievousaétéutileetquevospremiersprogrammesontété
  18. réalisésavecsuccès.Surtoutnevousprivezpasdemelaisserun
  19. messagesurnotreBBSsivousavezdesdifficultés,ilmefera
  20. plaisirdevousaidersipossible.Maistrèvedebavardageet
  21. commençonssansplustarderaveclesvariablestableaux.
  22.  
  23.  
  24. üVARIABLESTABLEAUXÇ
  25.     ==================
  26.  
  27.     Unevariabletableauestunevariablecontenantplusieurs
  28. valeurs,chacunedecelle-ciétantindicée(indexée).
  29.  
  30.     Supposonsquenousvoulonsemmagasinerlesnotesd'un
  31. étudiant.Aveccequenousconnaissonsdelaleçon1,nous
  32. devrionsécrireleprogrammesuivant:
  33.  
  34. àPROGRAMÇnoteà(INPUT);äÇ
  35. (*souvenonsnousquelesmotsenmajuscules/italiques
  36. sontdesmotsréservésauPascal*)
  37. àVARÇn1,n2,n3,n4,n5,n6,n7,n8:àINTEGER;Ç
  38.     (*supposonsquel'étudiantestévaluésur8notes*)
  39. àBEGINÇ
  40. àREADLNÇ(n1,n2,n3,n4,n5,n6,n7,n8);
  41. àEND.Ç
  42.  
  43.                (programme8)
  44.  
  45. Maisceciseraitbeaucoupplussimpleenseservantd'une
  46. variabletableau:
  47.  
  48. àPROGRAMÇnote2à(INPUT);Ç
  49.    à VARÇnotes:àARRAYÇ[1..8]àOFINTEGER;Ç
  50.     (*déclarationd'unevariabledetypetableau*)
  51.     i:àINTEGER;Ç(*indicedeboucle*)
  52.     àBEGINä
  53.     àFORÇi:=1àTOÇ8àDOREADLNÇ(notes[i]);
  54.     äEND.Ç
  55.  
  56.                     (programme9)
  57.  
  58.     Onremarqueraquel'indicedelaboucleàFORÇdevientaussi
  59. l'indicedutableau.
  60.  
  61.     Ladéclarationd'unevariabletableaudoittoujourssefaire
  62. selonlasyntaxesuivante:
  63.  
  64. äàARRAYä
  65. Ç|
  66. äà[ä
  67. Çl'étenduedutableau(typedel'indice)
  68. |
  69. äà]ä
  70. Ç|
  71. äàOFä
  72. Ç|
  73. typedelavariabletableau
  74.  
  75.                          (figure9)
  76.  
  77.        L'indiceindiquela"grandeur"dutableau.Dansnotre
  78. exemple    précédent,letableaupossède8"cases"numérotéesde
  79. 1à8.Cet    indicedoitêtrel'undestypessuivants:
  80.  
  81.     -SCALAIRE(voirplusbas)
  82.     -CARACTERE(àCHARÇ)
  83.     -BOOLEEN(àBOOLEANÇ)
  84.     -INTERVALLE
  85.  
  86.     LetypeINTERVALLEest,enfait,un"sous-type",commedans
  87. notreexemple,1..8estunintervalledutypeàINTEGER.ÇC'estle
  88. typeleplusutilisépourl'indiced'untableau.Ladéclaration
  89. d'untypeàintervallealaformesuivante:
  90.  
  91. constante
  92. |
  93. ..
  94. |
  95. constante
  96.  
  97.                          (figure10)
  98.  
  99.     Oncomprendraqu'uneintervallederéelsn'estpas
  100. acceptée puisqu'onpeutavoiruneinfinitédenombresréelsentre
  101. deuxautres.
  102.  
  103.     Lesconstantespeuventégalementêtredéfiniesdansles
  104. déclarationsdeconstantes.Exemple:
  105.  
  106.    à PROGRAMÇnote3à(INPUT);Ç
  107.    à CONSTÇmaxnote=8;
  108.    à VARÇnotes:àARRAYÇ[1..maxnote]àOFINTEGER;Ç
  109.     i:àINTEGER;Ç
  110.   à  BEGINÇ
  111.     àFORÇi:=1tomaxnoteàDOREADLNÇ(notes[i]);
  112.    à END.Ç
  113.  
  114.                     (programme10)
  115.  
  116. Onpeutaussidéclarerletypedel'indice:
  117.  
  118.    à PROGRAMÇnote4à(INPUT);Ç
  119.    à CONSTÇmaxnote=8;
  120. ä   à TYPEÇrange:1..maxnote;
  121. ä   à VARÇnotes:àARRAYÇ[range]àOFINTEGER;Ç
  122.     i:àINTEGER;Ç
  123.    à BEGINÇ
  124.     àFORÇi:=1àTOÇmaxnoteàDOREADLNÇ(notes[i]);
  125.    à END.Ç
  126.  
  127.                          (programme11)
  128.  
  129.     Alors,sidurantlasessionsuivante,lerésultatdechaque
  130. étudiantestcumulésur7notesaulieude8,laseulechoseque
  131. l'onauraàeffectuerestdechangerlavaleurdemaxnote.
  132.  
  133.     Quandautableau,ilpeutêtreden'importequeltype.Cela
  134. devientintéressantsinotrevariable,aulieud'êtreattribuéeà
  135. unseulétudiant,devaitcontenirlesnotesdetouslesétudiants
  136. delaclasse.Ainsi,letypedelavariabletableauseraitun
  137. autretableau.
  138.  
  139.    à PROGRAMÇclasseà(INPUT);Ç
  140. ä  à CONSTÇmaxnote=8;(*lenombredenotesparétudiant*)
  141.     maxetudiant=35;(*lenombred'étudiantspar
  142.                                classe*)
  143.    à TYPEÇnoterange:1..maxnote;
  144.     etudrange:1..maxetudiant;
  145.     unetud:àARRAYÇ[noterange]àOFINTEGER;Ç
  146.     class:àARRAYÇ[etudrange]àOFÇunetud;
  147.    à VARÇnotes:classe;(*variabledetypeclasseà
  148.                             2dimensions*)
  149.     i,j:àINTEGER;Ç(*indicedeboucle*)
  150.    à BEGINÇ
  151.     àFORÇi:=1àTOÇmaxetudiantàDOÇ
  152. àFORÇj:=1àTOÇmaxnoteàDOÇ
  153.     àREADLNÇ(notes[i,j]);
  154.    à END.Ç
  155.  
  156.                     (programme12)
  157.  
  158.     Noussommesenprésence,dansnotredernierprogramme,d'un
  159. tableauàdeuxdimensions.
  160.  
  161. "àARRAYÇ[type1]àOFARRAYÇ[type2]àOFÇtype3"estla
  162. mêmechoseque"àARRAYÇ[type1,type2]àOFÇtype3.
  163.  
  164.     OncomprenddoncquedansàREADLNÇ(notes[i,j])le"i"estle
  165. premierindice(premièredimension)tandisquele"j"estle
  166. deuxièmeindice(deuxièmedimension).Iln'yapasdelimitesau
  167. nombresdedimensions(1,2,3,4,etc).Seulementvotrecompilateur
  168. oulamémoiredisponibledel'ordinateurvouslimitera
  169. physiquement.Noteztoutefoisqu'ilesttrèsrarequel'ondoive
  170. seservird'untableaudeplusde3dimensions.
  171.  
  172.  
  173.    ü LESCHAINEDECARACTERESÇ
  174.     ========================
  175.  
  176.     Unechaînedecaractèresn'estautrechosequ'untableaude
  177. caractères.Exemple:
  178.  
  179.     àARRAYÇ[1..30]àOFCHARÇ
  180.  
  181. Danscetexemplel'onobtientunechaînede30caractères.
  182.  
  183.    à PROGRAMÇtonnomà(INPUT,OUTPUT);Ç
  184.    à CONSTÇstringlenght=30;
  185.     (*longueurmaximumdelachaînedecaracteres*)
  186.     àTYPEÇstring30à:ARRAYÇ[1..stringlenght]àOFCHAR;Ç
  187. ä   à VARÇnom:string30;
  188.    à BEGINÇ
  189. ä    àWRITELNÇ('Quelesttonnom?');
  190.     àREADLNÇ(nom);
  191.     àWRITELNÇ('Bonjour',nom);
  192.     àEND.  Ç
  193.                     (programme13)
  194.  
  195.     Dansl'ordinateur,uncaractèreoccupeunoctetdemémoire.
  196. Ainsi,dansl'exempleprécédent,lachaînedecaractèresoccupe
  197. l'espacede30octets(bytes).Ilestcependantpossiblede
  198. réduirelamémoireutiliséedemoitiéavecl'instructionàPACK.
  199. Ç
  200.     Cetteinstructionpermetdecompacteruncaractèreendemi
  201. octet,cequiépargnebeaucoupdemémoiredansletraitementd'un
  202. tableaudechaînedecaractères.Pourmieuxcomprendre,lisonsle
  203. programmesuivantquilitlesnotesdesétudiantsd'uneclasse
  204. dontlesnomsapparaîssentsuccessivementàl'écran.
  205.  
  206.  
  207.    à PROGRAMÇclasse2à(INPUT,OUTPUT);Ç
  208. ä   à CONSTÇmaxnote=8;
  209.     maxetudiant=35;
  210.    à TYPEÇnoterange:1..maxnote;
  211.     etudrange:1..maxetudiant;
  212.     string30:àPACKEDARRAYÇ[1..30]àOFCHAR;Ç
  213.     unetud:àARRAYÇ[noterange]ofàINTEGER;Ç
  214.    à VARäÇnotes:àARRAYÇ[etudrange]àOFINTEGER;Ç
  215.     (*tableaudenotes*)
  216.     noms:àARRAYÇ[etudrange]àOFÇstring30;
  217.     (*tableaudesnoms*)
  218.     i,j:àINTEGER;Ç
  219. ä   à BEGINÇ
  220.     àFORÇi:=1àTOÇmaxetudiantàDOÇ
  221.     àBEGINä
  222. WRITEÇ(noms[i]);(*affichelenom*)
  223.     àFORÇj:=1àTOÇmaxnoteàDOÇ
  224.     àREADÇ(notes[i,j]);
  225.     (*litlesnotesdel'étudiant*)
  226.     àWRITELN;Ç(*retournelecurseuràlaligne
  227.                          suivante*)
  228.     àEND;Ç(*fori*)
  229.   à  END.Ç
  230.  
  231.    à                 Ç (programme14)
  232.  
  233.  
  234.    ü PACKetUNPACKÇ
  235.     ================
  236.  
  237.     Telquementionnéprécédemment,àPACKÇpermetdecompacterun
  238. tableau.Passeulementuntableaudecaractèresmaisaussides
  239. tableauxd'autrestypes.Enfait,untableaunoncompactéréserve
  240. aumoinsunoctetparvaleur,dépendemmentdutypedutableau.
  241. S'ils'agitd'untableaudebooléensnoncompacté,ilréserveraun
  242. octetparvaleuralorsqu'enréalitéseullepremierbitde
  243. l'octet(ilya8bitsdansunoctet)estsignificatif.Sion
  244. compactecetableau,onpourraainsimettre8valeursbooléennes
  245. dansunseuloctet,d'oùéconomiedeprèsde90%delamémoire
  246. occupée.
  247.  
  248.     àUNPACKÇ,quandàlui,faitlecontrairedeàPACKÇ,c'est-à-
  249. direqu'avecuntableaucompacté,illerendàsonétatnormal.
  250.  
  251.     Pourcompacteruntableau,ilfautemployerlasyntaxe
  252. suivante:
  253.  
  254.    à PACKÇ(a,b,c);
  255.  
  256.     où"a"estlavariabletableau;
  257.     "b"estlerésultat(variabletableaucompactée);
  258. "c" est un entier indiquant l'indice de la première
  259. composantede"a"intervenantdansl'opération.
  260.  
  261.     Pourdécompacteruntableau,ilfaututiliserlasyntaxe
  262. suivante:
  263.  
  264.     àUNPACKÇ(c,a,b);
  265.  
  266.     Où"a","b",et"c"ontlamêmesignificationquedansla
  267. syntaxedeàPACK.
  268. Ç
  269.  
  270.     üLETYPESCALAIREÇ
  271.     ================
  272.  
  273.     Pardéfinition,letypescalaireestl'ensembledesvaleurs
  274. ordonnéesquepeutassumerunevariabledecetype.
  275.  
  276.     Parexemple,letypeàINTEGERÇestuntypescalaire,letypeà
  277. CHARÇl'estégalement.LetypeàREALÇ,lui,nel'estpas.
  278.  
  279.     Leprogrammeurpeutdéfinirsesproprestypesscalaires.
  280. Chaquenouveautypepossèdeunidentificateuretilestdéfinipar
  281. unelistedevaleursquepeutprendreunevariabledecetype.
  282.  
  283.     Exemple:àTYPEÇetatcivil = (celibataire, marie,divorce,
  284.                               separe,veuf);
  285.  
  286.     Etl'onpeutainsidéclarerunevariabledecetype:
  287.  
  288.     àVARÇalain:etatcivil;
  289.  
  290.     Lavariablealainpourradésormaisprendren'importequelle
  291. valeurdutypeetatcivil,soitcelibataire,marie,divorce,separe
  292. ouveuf.
  293.  
  294.     Exemple:alain:=celibataire;
  295.  
  296.     Lesvaleurscontenuesdanslalistedéfinissantuntype
  297. scalairenesontpasdeschaînesdecaractères.Ilestimpossible
  298. deleslireoudelesimprimer.Parcontre,cesvaleurspeuvent
  299. intervenirdansdesexpressionsetpeuventêtrecomparées.
  300.  
  301.     Iln'estpaspossiblequ'unmêmevaleurpuissefigurerdans
  302. deuxtypesdifférents.
  303.  
  304.     Exemple:àTYPEÇprenoms=(julie,serge,alain,denise);
  305.                tissus=(coton,laine,serge);
  306.  
  307.     Lestypesscalairescréésparleprogrammeurserventà
  308. rapprocherlelangagedeprogrammationdulangagehumain.
  309.  
  310.     D'icilaprochaine,portezvousbien,etbonneprogrammation!
  311.